zabbix关于item key的一点内容

        之前做过取nginx动态链接数的item,其中key是这样定义的

1
UserParameter=nginx.active,/usr/bin/curl -s "http://www.17gp.com/nginx_status" | awk 'NR==1 {print $NF}'

        其中nginx.active就是key,不过zabbix中key的定义要灵活得多。

        首先key是可以接受参数的,即可以定义成这个样子

1
UserParameter=nginx_status[*],/etc/zabbix/zabbix_agentd.d/zabbix_nginx.sh "$1"

        那么调用这个key的时候就可以使用nginx_status[active]给调用的脚本传参。*的意思就是可以代表可以传递多个参数。

        首先说key的格式,key的格式包括key的名称和参数,参数可以没有。

1
key_name[para_name1,para_name2……]

        key的命令规范:数字,字母(包含大小写),下划线,减号,点。

        判断key值是否合法会按照“9-9a-zA-Z_-.”这样的顺序从左向右匹配,如果说遇到不匹配的那就GG,这个key不合法的。简单来说就是看这个字符在不在允许的字符内,允许的话,就下一个,以此类推。

        key的参数:key可以有0个(即参数为空,会使用设置的默认值)到多个参数,多个参数用逗号分隔。参数可以是带引号的字符串,不带引号的字符串以及数组。

  • 带引号的参数,任何unicode数据都合法,如果有双引号需要脱意符“\”
  • 不带引号的参数,除了“,”和“]”外任何unicde都合法
  • 数组,数组要多加一对中括号

        Tip

  1. 如果需要使用命令行里面出现$2这种变量,那么需要使用两个$$2,例如awk’{print $$2}’,之前就遇到过这个问题,不停的测试,脚本输出正常,但是zabbix却拿不到数据,原来是在这里。为了防止和参数冲突,所以zabbix做了这个规定。
  2. zabbix禁止使用一些不安全的参数,如下
1
\ ‘ ” ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @